<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // ES6 允许使用“箭头”（=>）定义函数。  可以将函数写的更加简洁清晰

    // 普通函数如何改写箭头函数?
    // 1. 将函数改为匿名函数 (所有的箭头函数都是匿名函数)
    // 2. 省略函数关键词function , 在形参的()之后添加箭头 => 
    // 3. 如果函数的形式参数只有一个,小括号可以省略(前提是函数的参数没有设置默认值,和参数解构); 如果没有参数,或者形参不止一个不能省略
    // 4. 如果函数的执行语句只有一条,且是return语句 {} 和 return 均可省略
    //    4.1 如果箭头函数要返回对象,需要用()包谷


    // 使用时需注意:

    // （1）箭头函数没有自己的this对象（详见下文）。

    // （2）不可以使用arguments对象，该对象在函数体内不存在。如果要用，可以用 rest 参数代替。
    
    // （3）不可以当作构造函数，也就是说，不可以对箭头函数使用new命令，否则会抛出一个错误。

    // （4）不可以使用yield命令，因此箭头函数不能用作 Generator 函数。



    // function fn(a, b) {
    //     return a + b;
    // }

    // var fn = function(a,b){
    //     return a + b;
    // }

    // var fn = (a, b) => {
    //     return a + b;
    // }
    // var result = fn(1, 2);
    // console.log(result);


    // 3. 如果函数的形式参数只有一个,小括号可以省略; 如果没有参数,或者形参不止一个不能省略
    // var fn = (a) => {
    //     return a * 10;
    // }

    // var fn = (a = 0) => {// 参数有默认值  => 不能省略 ()
    //     return a * 10;
    // }

    // var fn = a => {  // 没有默认值/参数解构 => 省略()
    //     return a * 10;
    // }
    // var result = fn(1);
    // console.log(result);

    // 4. 如果函数的执行语句只有一条,且是return语句 {} 和 return 均可省略
    // var fn = a => a * 10;
    // var result = fn(2);
    // console.log(result);


    // 箭头函数返回一个对象
    var fn = v => ({a:1});
    var result = fn(2);
    console.log(result);

    




</script>

</html>